package com.ctshk.rpc.order.season.service;

import com.ctshk.common.model.TokenUser;
import com.ctshk.rpc.order.season.dto.SeasonOrderPayDTO;
import com.ctshk.rpc.order.season.dto.SeasonOrderTouristDataDTO;
import com.ctshk.rpc.order.season.dto.SeasonProductOrderAirDTO;
import com.ctshk.rpc.order.season.req.SeasonOrderReq;

import java.util.List;

/**
 * <p>
 * 套票-订单-机票订单 服务类
 * </p>
 *
 * @author 杨林
 * @since 2021-03-24
 */
public interface ISeasonProductOrderAirService {

    /* @MethodName: 保存 预订中心 选择 飞机票的产品
     * @Description: TODO
     * @Param:
     * @Return:
     * @Author: 杨林
     * @Date:2021/3/24 20:02
     **/
    void saveAirProduct(List<SeasonProductOrderAirDTO> airList, Long userId, Long id);


    /* @MethodName: 获取飞机票 订单信息
     * @Description: TODO
     * @Param:
     * @Return:
     * @Author: 杨林
     * @Date:2021/3/30 16:23
     **/
    List<SeasonProductOrderAirDTO> getOrderAirList(Long id);

    /* @MethodName: 下飞机票 供应商预订单
     * @Description: TODO
     * @Param:
     * @Return:
     * @Author: 杨林
     * @Date:2021/4/7 11:38
     **/
    void playSupplierOrder(Long orderId, TokenUser user);

    /* @MethodName: 下飞机票的订单
     * @Description: TODO
     * @Param:
     * @Return:
     * @Author: 杨林
     * @Date:2021/4/8 11:28
     **/
    void playAirOrder(Long orderId, TokenUser user, List<SeasonOrderPayDTO> payList,List<SeasonOrderTouristDataDTO> touristList);


    /* @MethodName: 更改确认状态
     * @Description: TODO
     * @Param:
     * @Return:
     * @Author: 杨林
     * @Date:2021/4/14 10:57
     **/
    void changeAffirmState(Long orderId, Integer isAffirm);

    /* @MethodName: 锁定机票库存
     * @Description: TODO
     * @Param:
     * @Return:
     * @Author: 杨林
     * @Date:2021/4/14 13:46
     **/
    void lockInventoryAir(Long seasonOrderId, SeasonOrderReq req, TokenUser tokenUser);


    /* @MethodName: 释放库存
     * @Description: TODO
     * @Param:
     * @Return:
     * @Author: 杨林
     * @Date:2021/4/14 14:52
     **/
    void backStock(Long orderId, Long userId);

    void changeCancelOrderState(Long orderId, Integer cancelStatus);

    /* @MethodName: 固定套票 下单 走内部挂账的
     * @Description: TODO
     * @Param:
     * @Return:
     * @Author: 杨林
     * @Date:2021/4/21 13:55
     **/
    void playInternalOrder(Long orderId, TokenUser user, List<SeasonOrderTouristDataDTO> touristList);
}
